﻿<include file="Public:header" />
<!-- MAIN CONTENT start -->
<div class="span3">
    <div class="well" style="padding: 8px 0;">
        <ul class="nav nav-list">
            <li class="nav-header">
                常见问题
            </li>
            <li>
                <a href="#question1">
                    <i class="icon-info-sign"></i>编译器和编译选项
                </a>
            </li>
            <li>
                <a href="#question2" >
                    <i class="icon-info-sign"></i>输入输出
                </a>
            </li>

            <li>
                <a href="#question3">
                    <i class="icon-info-sign"></i>编译错误
                </a>
            </li>

            <li>
                <a href="#question4">
                    <i class="icon-info-sign"></i>系统返回信息
                </a>
            </li>
            <li>
                <a href="#question5">
                    <i class="icon-info-sign"></i>参加在线比赛
                </a>
            </li>
            <li class="divider">
            </li>
            <li class="nav-header">
                <i class="icon-flag"></i>最新题目链接
            </li>
            <li>
                <ul class="nav nav-list">
                    <for start="0" end="10" >
                        <li>
                            <a href="">
                                C语言1.0.1
                            </a>
                        </li>
                    </for>
                </ul>
            </li>
        </ul>
    </div>
</div>
<div class="span9">
    <h3>常见问题
    </h3>
    <ul class="messages">
        <a name="question1"><h4>这个在线裁判系统使用什么样的编译器和编译选项?</h4></a>
        <li class="well">
            <p class="message">
                系统运行于<a href="http://www.debian.org/">Debian</a>/<a href="http://www.ubuntu.com">Ubuntu</a> Linux. 使用<a href="http://gcc.gnu.org/">GNU GCC/G++</a> 作为C/C++编译器, <a href="http://www.freepascal.org">Free Pascal</a> 作为pascal 编译器 ，用 <a href="http://www.oracle.com/technetwork/java/index.html">sun-java-jdk1.6</a> 编译 Java. 对应的编译选项如下:
            </p>
            <p>
            <table border="1">
                <tr>
                    <td>C:</td>
                    <td><font color=blue>gcc Main.c -o Main -O2 -Wall -lm --static -std=c99 -DONLINE_JUDGE</font></td>
                </tr>
                <tr>
                    <td>C++:</td>
                    <td><font color=blue>g++ Main.cc -o Main -O2 -Wall -lm --static -DONLINE_JUDGE</font></td>
                </tr>
                <tr>
                    <td>Pascal:</td>
                    <td><font color=blue>fpc Main.pas -oMain -O1 -Co -Cr -Ct -Ci </font></td>
                </tr>
                <tr>
                    <td>Java:</td>
                    <td><font color="blue">javac -J-Xms32m -J-Xmx256m Main.java</font>
                        <br>
                        <font size="-1" color="red">*Java has 2 more seconds and 512M more memory when running and judging.</font>
                    </td>
                </tr>
            </table>
            </p>
            <p>  编译器版本为（系统可能升级编译器版本，这里只供参考）:</p>
            <p>gcc &nbsp;&nbsp;(Ubuntu/Linaro 4.4.4-14ubuntu5)4.4.5</p>
            <p>glibc &nbsp;&nbsp;2.3.6</p>
            <p>Free Pascal Compiler&nbsp;&nbsp; version 2.4.0-2 [2010/03/06] for i386</p>
            <p>java &nbsp;&nbsp;version "1.6.0_22"</p>
        </li>
        <a name="question2"><h4>程序怎样取得输入、进行输出?</h4></a>
        <li class="well">
            <p class="message">
                你的程序应该从标准输入 stdin('Standard Input')获取输出 并将结果输出到标准输出 stdout('Standard Output').例如,在C语言可以使用 'scanf' ，在C++可以使用'cin' 进行输入；在C使用 'printf' ，在C++使用'cout'进行输出。用户程序不允许直接读写文件, 如果这样做可能会判为运行时错误 "<font color=green>Runtime Error</font>"
            </p>
            <h5>下面是 1000题的参考答案：</h5>
            <ul class="messages">
                <p>C++:</p>
                <li class="well">
                    <p class="message">
                        <pre><font color="blue">
                            #include &lt;iostream&gt;
                            using namespace std;
                            int main(){
                                int a,b;
                                while(cin >> a >> b)
                                cout << a+b << endl;
                                return 0;
                            }
                        </font></pre>
                    </p>
                </li>
                <p>C:</p>
                <li class="well">
                    <p class="message">
                        <pre><font color="blue">
                            #include &lt;stdio.h&gt;
                            int main(){
                                int a,b;
                                while(scanf("%d %d",&amp;a, &amp;b) != EOF)
                                    printf("%d\n",a+b);
                                return 0;
                            }
                        </font></pre>
                    </p>
                </li>
                <p>PASCAL:</p>
                <li class="well">
                    <p class="message">
                        <pre><font color="blue">
                            program p1001(Input,Output);
                            var
                                a,b:Integer;
                            begin
                                while not eof(Input) do
                                    begin
                                         Readln(a,b);
                                        Writeln(a+b);
                                    end;
                            end.
                        </font></pre>
                    </p>
                </li>
                <p>Java:</p>
                <li class="well">
                    <p class="message">
                        <pre><font color="blue">
                            import java.util.*;
                            public class Main{
                                public static void main(String args[]){
                                    Scanner cin = new Scanner(System.in);
                                    int a, b;
                                    while (cin.hasNext()){
                                        a = cin.nextInt(); b = cin.nextInt();
                                        System.out.println(a + b);
                                    }
                                }
                            }</font></pre>
                    </p>
                </li>
            </ul>
        </li>
        <a name="question3"><h4>为什么我的程序在自己的电脑上正常编译，而系统告诉我编译错误!</h4></a>
        <li class="well">
            <p class="message">
                GCC的编译标准与VC6有些不同，更加符合c/c++标准:
            <ul>
                <li>
                    <p><i class="icon-chevron-right"></i>
                        <font color=blue>main</font> 函数必须返回<font color=blue>int</font>, <font color=blue>void main</font> 的函数声明会报编译错误。
                    </p>
                </li>
                <li>
                    <p><i class="icon-chevron-right"></i>
                        <font color=green>i</font> 在循环外失去定义 "<font color=blue>for</font>(<font color=blue>int</font> <font color=green>i</font>=0...){...}"
                    </p>
                </li>
                <li>
                    <p><i class="icon-chevron-right"></i>
                        <font color=green>itoa</font> 不是ansi标准函数.
                    </p>
                </li>
                <li>
                    <p><i class="icon-chevron-right"></i>
                        <font color=green>__int64</font> 不是ANSI标准定义，只能在VC使用, 但是可以使用<font color=blue>long long</font>声明64位整数。如果用了__int64,试试提交前加一句#define __int64 long long
                    </p>
                </li>
            </ul>
            </p>
        </li>
        <a name="question4"><h4>系统返回信息都是什么意思?</h4></a>
        <li class="well">
            <p>详见下述:</p>
            <p class="">
                <ul>
                    <li>Pending:&nbsp;&nbsp;系统忙，你的答案在排队等待.</li>
                    <li>Pending Rejudge:&nbsp;&nbsp;因为数据更新或其他原因，系统将重新判你的答案.</li>
                    <li>Compiling:&nbsp;&nbsp;正在编译.</li>
                    <li>Running&amp;Judging:&nbsp;&nbsp;正在运行和判断.</li>
                    <li>Accepted:&nbsp;&nbsp;程序通过!</li>
                    <li>Presentation Error:&nbsp;&nbsp;答案基本正确，但是格式不对.</li>
                    <li>Wrong Answer:&nbsp;&nbsp;答案不对，仅仅通过样例数据的测试并不一定是正确答案，一定还有你没想到的地方.</li>
                    <li>Time Limit Exceeded:&nbsp;&nbsp;运行超出时间限制，检查下是否有死循环，或者应该有更快的计算方法.</li>
                    <li>Memory Limit Exceeded:&nbsp;&nbsp;超出内存限制，数据可能需要压缩，检查内存是否有泄露.</li>
                    <li>Output Limit Exceeded:&nbsp;&nbsp;输出超过限制，你的输出比正确答案长了两倍.</li>
                    <li>Runtime Error:&nbsp;&nbsp;运行时错误，非法的内存访问，数组越界，指针漂移，调用禁用的系统函数。请点击后获得详细输出.</li>
                    <li>Compile Error:&nbsp;&nbsp;编译错误，请点击后获得编译器的详细输出.</li>
                </ul>
            </p>
        </li>
        <a name="question5"><h4>如何参加在线比赛?</h4></a>
        <li class="well">
            <p class="messages">
                <empty name="session.user_id">
                    <a data-toggle="modal" href="#register">注册</a>
                <else/>
                    注册
                </empty>
                一个帐号，然后就可以练习，点击比赛列表Contests可以看到正在进行的比赛并参加。
            </p>
        </li>
        <p>其他问题请访问Online Judge System Of BUCT论坛系统</p>
    </ul>
</div>
<!-- MAIN CONTENT -->
<include file="Public:footer" />